package com.xhu.service.impl;

import com.xhu.mapper.UserMapper;
import com.xhu.pojo.User;
import com.xhu.service.UserService;
import com.xhu.utils.ResponseMessage;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Objects;

// 把当前类注入到 IOC 容器中，得到一个对象
@Service
public class UserServiceImpl implements UserService {
    //注入UserMapper 接口对象
    @Resource// 只对下面一行代码生效
    private UserMapper userMapper;

    // 注入 RedisTemplate 对象
    @Resource
    private RedisTemplate<String,Object> redisTemplate;


    @Override
    public ResponseMessage login(String username, String password) {
        // 调用 UserMapper 中的 login 方法
        User user=userMapper.login(username,password);
        // 逻辑处理：判断 user 是否为空，为空表示当前用户登录失败，否则登录成功
        if(Objects.isNull(user))
            return new ResponseMessage(500,"login fail");
        // 把当前登录成功的用户信息存入 redis 中，key:value 格式
        // key：就是登录用户的用户名， value：就是登录成功的用户的对象
        redisTemplate.opsForValue().set(username,user);
        return new ResponseMessage(200,"login success",user);
    }
    // 加载用户自己的数据
    @Override
    public ResponseMessage mySelf(String username) {
        User user=(User) redisTemplate.opsForValue().get(username);
        return new ResponseMessage(200,"user self",user);
    }
    //修改用户信息
    @Override
    public ResponseMessage updatePassword(String username, String password) {
        // 调用 UserMapper 中的 update 方法
        userMapper.updatePassword(username,password);
        return new ResponseMessage(200,"update success");
    }

    @Override
    public ResponseMessage register(String username, String password) {
        userMapper.register(username,password);
        return new ResponseMessage(200,"register success");
    }
}
